package com.triones.yjj.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.triones.yjj.entity.MemberDO;
import com.triones.yjj.entity.bo.*;
import com.triones.yjj.entity.vo.*;

import java.util.Map;

/**
 * 客户管理 service 接口
 *
 * @Author: triones
 */
public interface MemberService {

    /**
     * 查询客户列表（分页）
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<MemberListVO> pageList(MemberListParams params, PageQuery pageQuery);

    /**
     * 设置用户为老客
     * @param memberIds
     * @param type
     * @return
     */
    Boolean setMemberToOldOrNew(Long[] memberIds,Integer type);

    /**
     * 手动上传老客户手机号
     * @param bo
     * @return
     */
    Boolean uploadMobiles(OldMemberBO bo);

    /**
     * 获取老客户手机号列表（分页）
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<OldMemberVO> oldMemberMobilePageList(OldMemberParams params, PageQuery pageQuery);

    /**
     * 删除老客户手机号
     * @param ids
     * @return
     */
    Boolean delMemberMobiles(Long[] ids);

    /**
     * 用户数据统计
     * @param params
     * @return
     */
    Map dataShowStats(MemberListParams params);

    /**
     * 客户信息统计
     * @return
     */
    Map memberInfoStats(Long memberId);

    /**
     * 获取用户详细信息
     * @param memberId
     * @return
     */
    MemberDetailVO selectDetailById(Long memberId);

    /**
     * 编辑客户信息
     * @param dto
     * @return
     */
    Boolean editMember(MemberDO dto);

    /**
     * 获取客户行为列表
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<MemberActionListVO> actionPageList(MemberActionParams params, PageQuery pageQuery);

    /**
     * 获取客户分销列表
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<MemberDistributionListVO> distributionPageList(MemberDistributionParams params, PageQuery pageQuery);

    /**
     * 获取客户订单列表
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<MemberOrderListVO> orderPageList(MemberOrderParams params, PageQuery pageQuery);

    /**
     * 获取分享人列表
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<ShareListVO> sharePageList(ShareListParams params, PageQuery pageQuery);

    /**
     * 分享的人数据统计
     * @param params
     * @return
     */
    Map shareDataStats(ShareListParams params);

    /**
     * 获取潜在客户列表
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<PotentialListVO> potentialPageList(PotentialListParams params, PageQuery pageQuery);

    /**
     * 查询浏览记录列表（分页）
     * @param params
     * @param pageQuery
     * @return
     */
    TableDataInfo<MemberBrowseRecordVO> browseRecordPageList(BrowseRecordListParams params, PageQuery pageQuery);

    /**
     * 潜在客户
     * @return
     */
    Map browseStats();

    /**
     * 浏览记录相关统计
     * @param id
     * @return
     */
    Map browseRecordStats(Long id);

    void uploadLatelyActivity(Long memberId,Long activityId);

    /**
     * 提现申请
     * @param memberId
     * @param amount
     * @param source
     */
    void applyWithdraw(Long memberId,Double amount,String source);
}
